package com.swu.pad.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;

public class MailUtil {
     
	/*
	 * 提醒作者有人  给自己编写的内容 添加了评论    ，发送邮件 通知一下作者
	 */
	public static void sendMail(String to, String authorName,String courseName,String assignmentName)
			throws Exception, MessagingException {
       //  System.out.println("send email function");
		/*  Date date=new Date();
		  DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String time=format.format(date);
		
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.163.com"); // 设置发送邮件的邮件服务器的属性（这里使用网易的smtp服务器）
		props.put("mail.smtp.host", "smtp.163.com"); // 需要经过授权，也就是有户名和密码的校验，这样才能通过验证（一定要有这一条）
		props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
		Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息，供调试使
																// 用（你可以在控制台（console)上看到发送邮件的过程）
		session.setDebug(true); // 用session为参数定义消息对象
		MimeMessage message = new MimeMessage(session); // 加载发件人地址

		message.setFrom(new InternetAddress("visualpeer@163.com"));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载收件人地址
		message.setSubject("通知！"+authorName+"同学，你收到了评论！请去查看并回复！"); // 加载标题
//		message.setContent("<h1>时间："+time+"</h1><h2>你收到了来自： </h2><h3>" + authorName + " 同学的评论  ！ 快去查看并回复吧！ </h3>", "text/html;charset=UTF-8");
		message.setContent("时间："+time+"<br>"+authorName+"同学：你好！你的课程《"+courseName+"》的  "+assignmentName+" 作业，有同学给你写评论啦~快去登陆系统进行查看吧！不要忘记给你的小伙伴也进行评论反馈哟~<br>注意！必须使用Chrome浏览器!地址：http://222.198.126.242/pad", "text/html;charset=UTF-8");
		message.saveChanges(); // 保存变化
		Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
		transport.connect("smtp.163.com",25, "visualpeer@163.com", "zdengboswu74110"); // 把邮件发送出去
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();*/

	}
	
	/*
	 * 提醒添加评论的人， 作者对添加的评论 给出了  反馈   末尾要给出建议 ，只要有分数就会有建议  ，所以提醒评论者  1 有分数了  2 系统生成了建议策略 给出网址自己查看
	 */
	public static void sendMailToGrade(String to,String CommenterName,String courseName,String assignmentName)
			throws Exception, MessagingException {
		// System.out.println("send email function");
		/*  Date date=new Date();
		  DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String time=format.format(date);
		
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.163.com"); // 设置发送邮件的邮件服务器的属性（这里使用网易的smtp服务器）
		props.put("mail.smtp.host", "smtp.163.com"); // 需要经过授权，也就是有户名和密码的校验，这样才能通过验证（一定要有这一条）
		props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
		Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息，供调试使
																// 用（你可以在控制台（console)上看到发送邮件的过程）
		session.setDebug(true); // 用session为参数定义消息对象
		MimeMessage message = new MimeMessage(session); // 加载发件人地址

		message.setFrom(new InternetAddress("visualpeer@163.com"));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载收件人地址
		message.setSubject("通知！"+CommenterName +"同学，你收到了同学的反馈！请去查看并回复！"); // 加载标题
//		message.setContent("<h1>时间："+time+"</h1><h2>你收到了来自： </h2><h3>" + authorName + " 同学的评论  ！ 快去查看并回复吧！ </h3>", "text/html;charset=UTF-8");
		message.setContent("时间："+time+"<br>"+CommenterName+"同学：你好！你的课程《"+courseName+"》的  "+assignmentName+" 作业，你给同学的评论得到反馈啦~并且系统给出温馨提示啦~快去看看吧！如果你对这个反馈有什么疑问的话，可以进行回复哟~<br>注意！必须使用Chrome浏览器!地址：http://222.198.126.242/pad", "text/html;charset=UTF-8");
		message.saveChanges(); // 保存变化
		Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
		transport.connect("smtp.163.com",25, "visualpeer@163.com", "zdengboswu74110"); // 把邮件发送出去
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();*/

	}
	
	/*
	 * 人数没有达到上限，发送提醒邮件
	 */
	public static void sendMailToGroupUserLess(String to,String authorName,String courseName,String assignmentName)
			throws Exception, MessagingException {
		// System.out.println("send email function");
		/*  Date date=new Date();
		  DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String time=format.format(date);
		
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.163.com"); // 设置发送邮件的邮件服务器的属性（这里使用网易的smtp服务器）
		props.put("mail.smtp.host", "smtp.163.com"); // 需要经过授权，也就是有户名和密码的校验，这样才能通过验证（一定要有这一条）
		props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
		Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息，供调试使
																// 用（你可以在控制台（console)上看到发送邮件的过程）
		session.setDebug(true); // 用session为参数定义消息对象
		MimeMessage message = new MimeMessage(session); // 加载发件人地址

		message.setFrom(new InternetAddress("visualpeer@163.com"));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载收件人地址
		message.setSubject("通知！"+authorName+"同学，你收到了来自小组成员的组内评价！请去查看！"); // 加载标题
//		message.setContent("<h1>时间："+time+"</h1><h2>你收到了来自： </h2><h3>" + authorName + " 同学的评论  ！ 快去查看并回复吧！ </h3>", "text/html;charset=UTF-8");
		message.setContent("时间："+time+"<br>"+authorName+"同学：你好！你的课程《"+courseName+"》的 "+assignmentName+"作业，有组员给你打分啦~快去查看吧！<br>注意！必须使用Chrome浏览器!地址：http://222.198.126.242/pad", "text/html;charset=UTF-8");
		message.saveChanges(); // 保存变化
		Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
		transport.connect("smtp.163.com",25, "visualpeer@163.com", "zdengboswu74110"); // 把邮件发送出去
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();*/
	}
	
	/*
	 * 人数达到上限   组间打分   发送 建议邮件
	 */
	public static void sendMailToGroupUser(String to,String authorName,String courseName,String assignmentName)
			throws Exception, MessagingException {
		// System.out.println("send email function");
		/*  Date date=new Date();
		  DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String time=format.format(date);
		
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.163.com"); // 设置发送邮件的邮件服务器的属性（这里使用网易的smtp服务器）
		props.put("mail.smtp.host", "smtp.163.com"); // 需要经过授权，也就是有户名和密码的校验，这样才能通过验证（一定要有这一条）
		props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
		Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息，供调试使
																// 用（你可以在控制台（console)上看到发送邮件的过程）
		session.setDebug(true); // 用session为参数定义消息对象
		MimeMessage message = new MimeMessage(session); // 加载发件人地址

		message.setFrom(new InternetAddress("visualpeer@163.com"));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载收件人地址
		message.setSubject("通知！"+authorName +"同学，你收到了来自小组成员的组内评价！请去查看！"); // 加载标题
		message.setContent("时间："+time+"<br>"+authorName+"同学：你好！你的课程《"+courseName+"》的 "+assignmentName+"作业，系统给出温馨提示啦~快去看看吧！<br>注意！必须使用Chrome浏览器!地址：http://222.198.126.242/pad", "text/html;charset=UTF-8");
		message.saveChanges(); // 保存变化
		Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
		transport.connect("smtp.163.com",25, "visualpeer@163.com", "zdengboswu74110"); // 把邮件发送出去
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();*/
	}
	
	
}
